Project Euler
- 공식 홈페이지 - projecteuler.net
- 한글 번역 - projecteuler @kr
- (HackerRank) ProjectEuler+ - hackerrank.com
Problem
Problem list
- No 9 : Special Pythagorean triplet
- HackerRank : Project Euler 9: Special Pythagorean triplet
Simple Code
a, b, c를 하나 하나 대입하면서 조건을 만족하는 답을 찾는 매우 단순한 풀이
O(n²)의 성능을 가진다.
def special_pythagorean_triplet(n): |
예상대로 O(n²)의 복잡도로는 모든 테스트 케이스를 통과할 수 없다. 또한 항상 해가 하나만 있는 것은 아니다.
한 개의 반복문만 사용하기 위해서 b도 a로 표현한다.
정리하자면,
a = 1 ~ n//2 까지 대입
b = (a^2 - (a - n)^2) // 2(a-n) = n(2a-n) // 2(a-n)
c = n - a - b
def special_pythagorean_triplet(n): |
가장 기본적인 성능 개선 방법: 반복문을 줄인다!